There are many applications in which there are relationships between one or more resources. In some applications, the resources may be similar and in other applications the resources may be disparate. Examples of resources include, but are not limited to, user accounts, user groups, documents, photographs, or any other data item and possible associated dependent objects. In many applications in would be desirable to create and manage relationships between and among these resources. A simplified example of a relationship that may exist between two resources is a social networking application in which a relationship between two users is managed by the social networking application. Each resource is typically identified to the social networking application. However, these users are typically managed by the same underlying system or service.
One of the challenges in managing disparate resources stems from the fact that different resources may be created and managed by different underlying systems. For example, a user account for an email address is managed by an email system, while a photograph is managed by a photo management system. Therefore, managing a relationship between these two disparate resources requires that the management system have the ability to associate with and manage two different underlying systems.
In addition, there are problems associated with managing similar resources that may be created and managed by the same underlying system. In such an application, it would be desirable to be able to manage any resource, managed by any underlying system.